import wxUtil from './wx'
import flyio from './httpUtil'
import store from '../store/index'

/**
 * 微信登录，获取 code 和 encryptData
 */
const getWxLoginResult = () => {

}

/**
 * @method
 * 只通过 wx.login 的 code 进行登录
 * 已登录过的用户只需用 code 换取 openid 并从缓存中获取用户信息，无需每次通过 wx.getUserInfo 去获取用户信息
 *
 * @param {Object}   options           登录配置
 * @param {string}   options.loginUrl  登录使用的 URL，服务器应该在这个 URL 上处理登录请求，建议配合服务端 SDK 使用
 * @param {string}   [options.method]  可选。请求使用的 HTTP 方法，默认为 GET
 */
const login = options => {
  // 调用登录接口
  wx.login({
    success: (login_res) => {
      console.log(login_res)
      wx.getUserInfo({
        success: (res) => {
          console.log(res)

          flyio.post('/apiv1.json?service=weixin.login', {
            secret: '5f6da10a8d07c7ca68bde2a20d2dd368',
            code: login_res.code,
            client_secret: 'MzQ3MTliY2U0ODM2YjBmMzQwYmQ3YWM5N2Y0M2QwOGQ',
            nick_name: res.userInfo.nickName
          }).then((res) => {
            console.log(res)
            if (res.ret !== 0) {
              wx.showToast({
                title: res.msg,
                icon: 'none'
              })
              return
            }

            store.commit('setUserInfo', res.data)

            // 登录之后跳转首页
            wx.reLaunch({
              url: '/pages/index/index'
            })
          })
        }
      })
    }
  })
}

/**
 * 是否登录，从localStorage找，再没有则表示未登录
 * @returns {boolean}
 */
const isLogin = () => {
  wxUtil.getStorage('loginData').then((loginDataTemp) => {
    if (loginDataTemp === undefined || loginDataTemp === null) {
      return false
    } else {
      store.commit('setUserInfo', JSON.parse(loginDataTemp))
    }

    // 登录是否过期
    let nowTime = new Date().getTime() // 当前时间的时间戳
    if (store.state.user.expiresAt === undefined || store.state.user.expiresAt < nowTime / 1000) {
      wxUtil.clearStorage()
      return false
    } else {
      return true
    }
  }).catch((e) => {

  })
}

export default { login, isLogin }
